<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../libs/vue.js"></script>
</head>
<body>
    <div id="app">
        <h2>money : {{money | moneyFormat}}</h2>
        <h2>money: {{money | currency(3,'$')}}</h2>
    </div>
    
    <script>
        Vue.filter('moneyFormat',(value,n='2',type=',')=>{
            if(!value) return '';
            value = value.toString().split('.'); //toString变成字符串，按照小数点切割
            // 整数转化为数组
            let intNum = value[0].split('');
            let floatNum = value[1];
            // console.log(intNum,floatNum);
            // 小数保留几位，前闭后开
            floatNum = floatNum.substring(0,2);
            // 整数三位数一个逗号
            intNum.reverse();
            // 三位一个逗号
            intNum.splice(3,0,type);
            intNum.splice(7,0,type);
            intNum.splice(11,0,type);
            intNum.reverse();
            // 将数组变成字符串
            intNum = intNum.join('');
            return intNum + '.'+ floatNum;
        })
        const vm = new Vue({
            data:{
                money:4345432123.323445
            },
            // 新格式化，注意数组字符串的转化
            filters:{
                currency(value,num = 2,symbol){
                    if(!value) return '';
                    // value是数字，先进行小数操作再进行整数操作
                    value = value.toFixed(num);
                    value = value.toString().split('.');
                    let floatStr = value[1];
                    // 整数操作
                    // toString先变成字符串，再将字符串传化为数组
                    let intArray = value[0].split('');
                    intArray.reverse();
                    intArray=intArray.map((value,index)=>{
                        // 反转之后，在value后加逗号，第四个后面加逗号,逗号不会跟着反转
                        if(index % 3 == 0 && index != 0){
                            value = value + ','
                        }
                        return value;
                    });
                    // 再次反转数组,再变成字符串
                    intArray = intArray.reverse().join('');
                    console.log(intArray);
                    return symbol + intArray + '.' + floatStr;
                }
            }
            
        }).$mount('#app')
    </script>
</body>
</html>